package net.hserver.oauth.config;

import cn.dev33.satoken.oauth2.config.SaOAuth2ServerConfig;
import cn.dev33.satoken.stp.StpUtil;
import cn.dev33.satoken.util.SaResult;
import cn.hserver.core.ioc.annotation.Bean;
import cn.hserver.core.ioc.annotation.Configuration;
import cn.hserver.plugin.web.context.HServerContextHolder;

import java.util.HashMap;
import java.util.Map;

@Configuration
public class OAuthConfig {

    @Bean
    public SaOAuth2ServerConfig saOAuth2ServerConfig() {
        SaOAuth2ServerConfig saOAuth2ServerConfig = new SaOAuth2ServerConfig();
        saOAuth2ServerConfig.notLoginView = ()->{
            System.out.println("未登錄");
            HServerContextHolder.getWebKit().httpResponse.sendTemplate("login.ftl");
            return null;
        };
        // 登录处理函数
        saOAuth2ServerConfig.doLoginHandle = (name, pwd) -> {
            if("sa".equals(name) && "123456".equals(pwd)) {
                StpUtil.login(10001);
                return SaResult.ok();
            }
            return SaResult.error("账号名或密码错误");
        };

        // 授权确认视图
        saOAuth2ServerConfig.confirmView = (clientId, scopes)->{
            Map<String, Object> map = new HashMap<>();
            map.put("clientId", clientId);
            map.put("scope", scopes);
            System.out.println(map);
            HServerContextHolder.getWebKit().httpResponse.sendTemplate("confirm.ftl",map);
            return null;
        };
        return saOAuth2ServerConfig;
    }

}
